package com.gzmu.face.entity;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
/**
 * <p>
 * 
 * </p>
 *
 * @author xiaobo Yan
 * @since 2020-04-20
 */
@Data
@Accessors(chain = true)
@TableName("t_person")
public class Person extends Model<Person> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = com.baomidou.mybatisplus.enums.IdType.AUTO)
    private Integer id;
    /**
     * 硬件id
     */
    @JsonProperty( "DeviceID")
    private String DeviceID;
    /**
     * 操作的 ID 类型：0:CustomizeID, 1:LibID,(修改使用) 2:PersonUUID
     */
    @JsonProperty( "IdType")
    private Integer IdType;
    /**
     * 用户自定义id, IdType=0 时必填
     */
    @JsonProperty( "CustomizeID")
    private Integer CustomizeID;
    /**
     * 数据库 ID（ 修改使用），IdType=1 时必填
     */
    @JsonProperty( "LibID")
    private Integer LibID;
    /**
     * 用户定义的 UUID，IdType=2 时必填
     */
    @JsonProperty( "PersonUUID")
    private String PersonUUID;
    /**
     * 名单类型，0: 白名单、1: 黑名单，2-11:人员类型(分析服务器使用)
     */
    @JsonProperty( "PersonType")
    private Integer PersonType;
    /**
     * 姓名， 最大长度 32 字符长度（ 含结束符）
     */
    @JsonProperty( "Name")
    private String Name;
    /**
     * 性别，0: 男、1: 女
     */
    @JsonProperty( "Gender")
    private Integer Gender;
    /**
     * 民族，1: "汉"、2: "蒙古"、3: "回、4: "藏"、5: "维吾尔"、6: "苗"、7: "彝"、8: "壮"、9: "布依"、10:"朝鲜"、11:"满"、12:"侗"、13:"瑶"、14:"白"、15:"土家"、16:"哈尼"、17:"哈萨克"、18:"傣"、19:"黎"、20:"傈僳"、21:"佤"、22:"畲"、23:"高山"、24:"拉祜"、25:"水"、26:"东乡"、27:"纳西"、28:"景颇"、29:"柯尔克孜"、30:"土"、31:"达斡尔"、32:"仫佬"、33:"羌"、34:"布朗"、35:"撒拉"、36:"毛南"、37:"仡佬"、38:"锡伯"、39:"阿昌"、40:"普米"、41:"塔吉克"、42:"怒"、43:"乌孜别克"、44:"俄罗斯"、45:"鄂温克"、46:"德昂"、47:"保安"、48:"裕固"、49:"京"、50:"塔塔尔"、51:"独龙"、52:"鄂伦春"、53:"赫哲"、54:"门巴"、55:"珞巴"、56:"基诺"、57:"其他"
     */
    @JsonProperty( "Nation")
    private Integer Nation;
    /**
     * 证件类型，0:身份证1:护照（临时作为所属部门id）
     */
    @JsonProperty( "CardType")
    private Integer CardType;
    /**
     * 证件号， 最大长度为 32个字符长度（ 含结束符）
     */
    @JsonProperty( "IdCard")
    private String IdCard;
    /**
     * 生日， e.g., 2018-1-1
     */
    @JsonProperty( "Birthday")
    private String Birthday;
    /**
     * 电话号码， 最大长度为 32个字符长度（ 含结束符）
     */
    @JsonProperty( "Telnum")
    private String Telnum;
    /**
     * 籍贯， 最大长度为 32个字符长度（ 含结束符）
     */
    @JsonProperty( "Native")
    private String Native;
    /**
     * 地址， 最大长度为 72个字符长度（ 含结束符）
     */
    @JsonProperty( "Address")
    private String Address;
    /**
     * 备注， 最大长度为 64 个字符长度（ 含结束符）
     */
    @JsonProperty( "Notes")
    private String Notes;
    /**
     * 韦根卡号生成方式，0: 公用卡号、1: 自动生成、2: 手动输入、3: 不使用门禁卡号
     */
    @JsonProperty( "MjCardFrom")
    private Integer MjCardFrom;
    /**
     * 组成韦根卡号根据的韦根协议，当 MjCardFrom=2 必填。0: 26 位、1: 34 位、6:26 位(8+16 facility code+userid(设备代码+卡号)分开填写);、7:34 位(8+24 facility code+userid(设备代码+卡号)分开填写)、默认:1(34 位)
     */
    @JsonProperty( "WiegandType")
    private Integer WiegandType;
    /**
     * 设备代码(Facility code)。当 WiegandType= 6 or 7 时必填，和 MjCardNo一起使用。 当WiegandType=0 or 1 时, 不必填写
     */
    @JsonProperty( "WGFacilityCode")
    private Integer WGFacilityCode;
    /**
     * 韦根门禁卡号(userid)。当 WiegandType= 6 or 7时 必 填 ， 和WGFacilityCode 一 起 使用。 当 WiegandType=0 or 1 时， 单独构成韦根卡号。 
     */
    @JsonProperty( "MjCardNo")
    private Integer MjCardNo;
    /**
     * 临时用于判断人员职务
     */
    @JsonProperty( "CardMode")
    private Integer CardMode;
    /**
     * Id 卡卡号， 最大长度为 18 个字符长度，针对内置刷卡机型（含结束符）。
     */
    @JsonProperty( "RFIDCard")
    private String RFIDCard;
    /**
     * 是否是临时名单。0: 永久生效名单、1: 临时名单 1(起止时间段)、2: 临时名单 2(每天时间段， 新数据库版本支持)、3: 临 时 名 单 3( 有 效次数， 新数据库版本支持)
     */
    @JsonProperty( "Tempvalid")
    private Integer Tempvalid;
    /**
     * 临时名单开始时间。如果是临时名单 1， 临时名单生效的开始时间，e.g., 2018-03-12T09:09:20。如果是临时名单2 ：e.g., 2018-03-12T09:09:20 2018-03-12为临时名单生效的开始时间年月日；09:09:20为临时名单生效的开始时间时分秒
     */
    @JsonProperty( "ValidBegin")
    private String ValidBegin;
    /**
     * 临时名单结束时间。如果是临时名单 1， 临时名单生效的结束时间，e.g., 2018-03-12T09:10:00。如果是临时名单2 ：e.g., 2018-03-12T09:09:20 2018-03-12为临时名单生效的结束时间年月日；09:09:20为临时名单生效的结束时间时分秒
     */
    @JsonProperty( "ValidEnd")
    private String ValidEnd;
    /**
     * 第 X 通道权限。0:没有通道权限 1:有通道权限(人脸多路服务器使用)
     */
    @JsonProperty( "ChannelAuthorityX")
    private Integer ChannelAuthorityX;
    /**
     * 临时名单 3 的有效通行次数,1~ 4294967295
     */
    @JsonProperty( "EffectNumber")
    private Integer EffectNumber;
    /**
     * 是否进行图片校验（添加的图片相似度大于黑白名单门限值的， 提示名单已存在），默认 0:不校验，1:校验
     */
    private Integer isCheckSimilarity;
    /**
     * 身份证 ID， 最大长度为 32个字符长度（含结束符）。
     */
    @JsonProperty( "IdCardId")
    private String IdCardId;
    /**
     * 门禁卡号， 最大长度为 24 个字符长度（含结束符）。（只针对门禁机， 其他机型无效）
     */
    @JsonProperty( "AccessId")
    private String AccessId;
    /**
     * 管理员授权卡， 最大长度为 32 个字符长度（含结束符） 。 （只针对门禁机，其他机型无效）
     */
    @JsonProperty( "WardenId")
    private String WardenId;
    /**
     * 房间号， 最大长度为 24个字符长度（含结束符） 。（只针对门禁机， 其他机型无效）
     */
    @JsonProperty( "RoomNum")
    private String RoomNum;
    /**
     * 人脸图片的 base64 编码数据(不超过 1M)，和 picURI 二选一使用
     */
    private String picinfo;
    /**
     * 人脸图片数据的云端 URI 地址，和 picinfo 两选一使用
     */
    private String picURI;
    /**
     * 同步数据
     */
    private Integer remark;

    @JsonIgnore
    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    @JsonIgnore
    public String getDeviceID() {
        return DeviceID;
    }

    public void setDeviceID(String deviceID) {
        DeviceID = deviceID;
    }

    @JsonIgnore
    public Integer getIdType() {
        return IdType;
    }

    public void setIdType(Integer idType) {
        IdType = idType;
    }
    @JsonIgnore
    public Integer getCustomizeID() {
        return CustomizeID;
    }

    public void setCustomizeID(Integer customizeID) {
        CustomizeID = customizeID;
    }
    @JsonIgnore
    public Integer getLibID() {
        return LibID;
    }

    public void setLibID(Integer libID) {
        LibID = libID;
    }
    @JsonIgnore
    public String getPersonUUID() {
        return PersonUUID;
    }

    public void setPersonUUID(String personUUID) {
        PersonUUID = personUUID;
    }
    @JsonIgnore
    public Integer getPersonType() {
        return PersonType;
    }

    public void setPersonType(Integer personType) {
        PersonType = personType;
    }
    @JsonIgnore
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }
    @JsonIgnore
    public Integer getGender() {
        return Gender;
    }

    public void setGender(Integer gender) {
        Gender = gender;
    }
    @JsonIgnore
    public Integer getNation() {
        return Nation;
    }

    public void setNation(Integer nation) {
        Nation = nation;
    }
    @JsonIgnore
    public Integer getCardType() {
        return CardType;
    }

    public void setCardType(Integer cardType) {
        CardType = cardType;
    }
    @JsonIgnore
    public String getIdCard() {
        return IdCard;
    }

    public void setIdCard(String idCard) {
        IdCard = idCard;
    }
    @JsonIgnore
    public String getBirthday() {
        return Birthday;
    }

    public void setBirthday(String birthday) {
        Birthday = birthday;
    }
    @JsonIgnore
    public String getTelnum() {
        return Telnum;
    }

    public void setTelnum(String telnum) {
        Telnum = telnum;
    }
    @JsonIgnore
    public String getNative() {
        return Native;
    }

    public void setNative(String aNative) {
        Native = aNative;
    }
    @JsonIgnore
    public String getAddress() {
        return Address;
    }

    public void setAddress(String address) {
        Address = address;
    }
    @JsonIgnore
    public String getNotes() {
        return Notes;
    }

    public void setNotes(String notes) {
        Notes = notes;
    }
    @JsonIgnore
    public Integer getMjCardFrom() {
        return MjCardFrom;
    }

    public void setMjCardFrom(Integer mjCardFrom) {
        MjCardFrom = mjCardFrom;
    }
    @JsonIgnore
    public Integer getWiegandType() {
        return WiegandType;
    }

    public void setWiegandType(Integer wiegandType) {
        WiegandType = wiegandType;
    }
    @JsonIgnore
    public Integer getWGFacilityCode() {
        return WGFacilityCode;
    }

    public void setWGFacilityCode(Integer WGFacilityCode) {
        this.WGFacilityCode = WGFacilityCode;
    }
    @JsonIgnore
    public Integer getMjCardNo() {
        return MjCardNo;
    }

    public void setMjCardNo(Integer mjCardNo) {
        MjCardNo = mjCardNo;
    }
    @JsonIgnore
    public Integer getCardMode() {
        return CardMode;
    }

    public void setCardMode(Integer cardMode) {
        CardMode = cardMode;
    }
    @JsonIgnore
    public String getRFIDCard() {
        return RFIDCard;
    }

    public void setRFIDCard(String RFIDCard) {
        this.RFIDCard = RFIDCard;
    }
    @JsonIgnore
    public Integer getTempvalid() {
        return Tempvalid;
    }

    public void setTempvalid(Integer tempvalid) {
        Tempvalid = tempvalid;
    }
    @JsonIgnore
    public String getValidBegin() {
        return ValidBegin;
    }

    public void setValidBegin(String validBegin) {
        ValidBegin = validBegin;
    }
    @JsonIgnore
    public String getValidEnd() {
        return ValidEnd;
    }

    public void setValidEnd(String validEnd) {
        ValidEnd = validEnd;
    }
    @JsonIgnore
    public Integer getChannelAuthorityX() {
        return ChannelAuthorityX;
    }

    public void setChannelAuthorityX(Integer channelAuthorityX) {
        ChannelAuthorityX = channelAuthorityX;
    }
    @JsonIgnore
    public Integer getEffectNumber() {
        return EffectNumber;
    }

    public void setEffectNumber(Integer effectNumber) {
        EffectNumber = effectNumber;
    }
    @JsonIgnore
    public Integer getIsCheckSimilarity() {
        return isCheckSimilarity;
    }

    public void setIsCheckSimilarity(Integer isCheckSimilarity) {
        this.isCheckSimilarity = isCheckSimilarity;
    }
    @JsonIgnore
    public String getIdCardId() {
        return IdCardId;
    }

    public void setIdCardId(String idCardId) {
        IdCardId = idCardId;
    }
    @JsonIgnore
    public String getAccessId() {
        return AccessId;
    }

    public void setAccessId(String accessId) {
        AccessId = accessId;
    }
    @JsonIgnore
    public String getWardenId() {
        return WardenId;
    }

    public void setWardenId(String wardenId) {
        WardenId = wardenId;
    }
    @JsonIgnore
    public String getRoomNum() {
        return RoomNum;
    }

    public void setRoomNum(String roomNum) {
        RoomNum = roomNum;
    }
    @JsonIgnore
    public String getPicinfo() {
        return picinfo;
    }

    public void setPicinfo(String picinfo) {
        this.picinfo = picinfo;
    }
    @JsonIgnore
    public String getPicURI() {
        return picURI;
    }

    public void setPicURI(String picURI) {
        this.picURI = picURI;
    }
    @JsonIgnore
    public Integer getRemark() {
        return remark;
    }

    public void setRemark(Integer remark) {
        this.remark = remark;
    }

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
